home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_xemacs.idb / usr / freeware / lib / xemacs-20.4 / info / efs.info.z / efs.info
Encoding:
GNU Info File  |  1998-05-21  |  65.5 KB  |  1,535 lines

  1. This is Info file ../info/efs.info, produced by Makeinfo version 1.68
  2. from the input file efs.texi.
  3.  
  4. START-INFO-DIR-ENTRY
  5. * EFS::        Transparent remote file access via FTP.
  6. END-INFO-DIR-ENTRY
  7.  
  8. 
  9. File: efs.info,  Node: Top,  Next: What is EFS?,  Prev: (dir),  Up: (dir)
  10.  
  11. EFS
  12. ***
  13.  
  14.    This file documents EFS, a system for transparent file-transfer
  15. between remote hosts using the FTP protocol within Emacs.
  16.  
  17.    This info is for version 1.15 of EFS.
  18.  
  19.    Documentation version: 1.0
  20.  
  21.    Copyright (C) 1991, 1992 Free Software Foundation, Inc.
  22.  
  23.    Permission is granted to make and distribute verbatim copies of this
  24. manual provided the copyright notice and this permission notice are
  25. preserved on all copies.
  26.  
  27.    Permission is granted to copy and distribute modified versions of
  28. this manual under the conditions for verbatim copying, provided that the
  29. entire resulting derived work is distributed under the terms of a
  30. permission notice identical to this one.
  31.  
  32. * Menu:
  33.  
  34. * What is EFS?::
  35. * Installing EFS::              Where to find it, and how to use it.
  36. * Using EFS::                   EFS - a users' guide.
  37. * Getting help::                Mailing lists and newsgroups.
  38. * Bugs::                        Known bugs, and a wish list.
  39.  
  40. Indices:
  41. * Concept Index::
  42. * Variable and function index::
  43.  
  44. 
  45. File: efs.info,  Node: What is EFS?,  Next: Installing EFS,  Prev: Top,  Up: Top
  46.  
  47. Introducing EFS
  48. ***************
  49.  
  50.    EFS is a system for transparent file-transfer between remote UNIX,
  51. Guardian, DOS, Macintosh, KA9Q, Netware, NOS/VE, Plan 9, TI Explorer,
  52. Twenex, TOPS 20, VOS, MPE, MVS, VMS, CMS or MTS hosts using FTP. This
  53. means that you can edit, copy and otherwise manipulate files on any
  54. machine you have access to from within Emacs as if it were a local
  55. file. EFS works by introducing an extended filename syntax, and
  56. overloading functions such as `insert-file-contents' so that accessing
  57. a remote file causes appropriate commands to be sent to an FTP process.
  58. EFS includes and enhanced version of Dired to facilitate directory
  59. browsing and multiple file transfer from remote hosts.
  60.  
  61.    The authors of EFS are Sandy Rutherford (`sandy@math.ubc.ca') and
  62. Andy (Ange) Norman (`ange@hplb.hpl.hp.com').  EFS is partly based on an
  63. earlier package called ange-ftp.  The integration of EFS 1.15 into
  64. XEmacs and numerous bug fixes were done by Mike Sperber
  65. (`sperber@informatik.uni-tuebingen.de').
  66.  
  67.    Many people have sent in enhancements for ange-ftp and EFS.  Members
  68. of the ange-ftp and EFS Hall of Fame include:
  69.  
  70.    * Many thanks to Roland McGrath for improving the filename syntax
  71.      handling, for suggesting many enhancements and for numerous
  72.      cleanups to the code.
  73.  
  74.    * Thanks to Jamie Zawinski for bugfixes and for ideas such as
  75.      gateways.
  76.  
  77.    * Thanks to Ken Laprade for improved `.netrc' parsing and password
  78.      reading, and Dired/shell autoloading.
  79.  
  80.    * Thanks to Sebastian Kremer for tree dired support and for many
  81.      ideas and bugfixes.
  82.  
  83.    * Thanks to Joe Wells for bugfixes, non-UNIX system support, VOS
  84.      support, and hostname completion.
  85.  
  86.    * Thanks to Nakagawa Takayuki for many good ideas,
  87.      filename-completion, help with file-name expansion, efficiency
  88.      worries, stylistic concerns and many bugfixes.
  89.  
  90.    * Also, thanks to Rob Austein, Doug Bagley, Andy Caiger, Jim
  91.      Franklin, Noah Friedman, Aksnes Knut-Havard, Elmar Heeb, John
  92.      Interrante, Roland McGrath, Jeff Morgenthaler, Mike Northam, Jens
  93.      Petersen, Jack Repenning, Joerg-Martin Schwarz, Michael Sperber,
  94.      Svein Tjemsland, Andy Whitcroft, Raymond A. Wiker and many others
  95.      whose names have been forgotten who have helped to debug and fix
  96.      problems.
  97.  
  98.    Finally, this info file was put together by Mike Sperber
  99. (`sperber@informatik.uni-tuebingen.de') from an ange-ftp info file
  100. written by Dave Smith (`dsmith@stats.adelaide.edu.au') and the EFS
  101. source code.
  102.  
  103. 
  104. File: efs.info,  Node: Installing EFS,  Next: Using EFS,  Prev: What is EFS?,  Up: Top
  105.  
  106. Installing EFS
  107. **************
  108.  
  109.    At the time of writing of this documentation, the version of EFS
  110. distributed with XEmacs (this means the EFS running on XEmacs
  111. 19.15/20.1) is the latest version available.  It includes many bugfixes
  112. and some enhancements over the last separately released version of EFS,
  113. 1.15.  This situation will change once a new version of EFS is
  114. available.
  115.  
  116.    Generally, EFS is pretty easy to get hold of. FTP is the probably the
  117. simplest method, but other options such as mail are available.
  118.  
  119.    Once you have the Emacs-Lisp source, there are a few customisations
  120. you might need to make. The ideal configuration is to have the FTP
  121. process running on the same machine as you are running Emacs on, but
  122. this is not always possible since some machines cannot access hosts
  123. outside the local network. In this case, the FTP process needs to be
  124. run on a machine which *does* have access to the local world -- this is
  125. called the *gateway host*. EFS has facilities to make use of a gateway
  126. host when accessing remote hosts.
  127.  
  128. * Menu:
  129.  
  130. * Obtaining source code::       Where to find the EFS source.
  131. * Installing source::           Where to put it, how to load it.
  132. * Using a gateway::             If your local machine has limited access.
  133. * Setting up a gateway::
  134. * Gateway types::
  135. * Gateway problems::
  136. * Other options::               More user variables to twiddle.
  137.  
  138. 
  139. File: efs.info,  Node: Obtaining source code,  Next: Installing source,  Prev: Installing EFS,  Up: Installing EFS
  140.  
  141. How to get the EFS source code
  142. ==============================
  143.  
  144.    The latest separately distributed version of EFS should always be
  145. available from Andy Norman's home page at
  146.      http://www-uk.hpl.hp.com/people/ange/efs
  147.  
  148.    There are also some ftp locations:
  149.  
  150. Switzerland
  151.           /anonymous@itp.ethz.ch:/sandy/efs/
  152.  
  153. Massachusetts, USA
  154.           /anonymous@alpha.gnu.ai.mit.edu:/efs/
  155.  
  156. California, USA
  157.           /anonymous@ftp.hmc.edu:/pub/emacs/packages/efs/
  158.  
  159.    Failing these, someone on the EFS mailing list (*Note Getting
  160. help::) may be able to help you find the latest version.
  161.  
  162. 
  163. File: efs.info,  Node: Installing source,  Next: Using a gateway,  Prev: Obtaining source code,  Up: Installing EFS
  164.  
  165. Installing the source
  166. =====================
  167.  
  168.    For byte compiling the EFS package, a `Makefile' is provided.  You
  169. should follow the instructions at the top of the `Makefile'.  If you
  170. have any problems, please let us know so that we can fix them for other
  171. users. Don't even consider using eFS without byte compiling it. It will
  172. be far too slow.
  173.  
  174.    If you decide to byte compile efs by hand, it is important that the
  175. file `efs-defun.el' be byte compiled first, followed by `efs.el'.  The
  176. other files may be byte compiled in any order.
  177.  
  178.    To use EFS, simply put the byte compiled files in your load path and
  179. add
  180.  
  181.      (require 'efs)
  182.  
  183.    in your `.emacs' file.  Note this takes awhile, and some users have
  184. found this to be unbearably slow.  Therefore ...
  185.  
  186.    If you would like efs to be autoloaded when you attempt to access a
  187. remote file, put
  188.  
  189.      (require 'efs-auto)
  190.  
  191.    in your `.emacs' file. Note that there are some limitations
  192. associated with autoloading EFS. A discussion of them is given at the
  193. top of `efs-auto.el'.
  194.  
  195.    Note that, in XEmacs, EFS automatically loads `efs-auto' when the
  196. user accesses a remote file.  Therefore, no additional `require'
  197. statements should be necessary to use EFS.  Just fire away ...
  198.  
  199.    The above instructions should allow you to access all hosts that your
  200. local machine can access. If your local host has limited access,
  201. however, you may wish to have EFS working through a gateway machine. If
  202. so, read on. Otherwise, *Note Using EFS:: to get started using EFS.
  203.  
  204. 
  205. File: efs.info,  Node: Using a gateway,  Next: Setting up a gateway,  Prev: Installing source,  Up: Installing EFS
  206.  
  207. Using a gateway
  208. ===============
  209.  
  210.    Sometimes it is necessary for the FTP process to be run on a
  211. different machine than the machine running Emacs.  This can happen when
  212. the local machine has restrictions on what hosts it can access.
  213.  
  214.    Suppose you are running Emacs (and EFS, of course) on a machine X
  215. (let's call it the `local host') and you want to access a file on a
  216. machine Z (which we will call the `remote host'). Unfortunately, X does
  217. not have FTP access to Z: when you try a manual FTP something like the
  218. following happens:
  219.      X$ ftp Z.foo.bar.com
  220.      ftp: connect: Host is unreachable
  221.  
  222. However, X *does* have access to a machine Y (the `gateway machine')
  223. which *can* access Z. Fortunately, you have an account on the gateway
  224. machine, and so the solution is to login to Y, ftp to Z, download the
  225. file you want from Z to Y, and then copy it from Y to the local host,
  226. X. This can get a bit tedious, to say the least, but fortunately EFS
  227. can do all the hard work for you.
  228.  
  229. 
  230. File: efs.info,  Node: Setting up a gateway,  Next: Gateway types,  Prev: Using a gateway,  Up: Installing EFS
  231.  
  232. Setting up a gateway
  233. ====================
  234.  
  235.   1. Set the variable `efs-gateway-host' to the name of a machine that
  236.      doesn't have the access restrictions.  If you need to use a
  237.      nonstandard port to access this host for gateway use, then specify
  238.      `efs-gateway-host' as `<hostname>#<port>'.
  239.  
  240.   2. Set the variable `efs-ftp-local-host-regexp' to a regular
  241.      expression that matches hosts that can be contacted from running a
  242.      local ftp process, but fails to match hosts that can't be accessed
  243.      locally.
  244.  
  245.      For example:
  246.  
  247.                "\\.hp\\.com$\\|^[^.]*$"
  248.  
  249.      will match all hosts that are in the .hp.com domain, or don't have
  250.      an explicit domain in their name, but will fail to match hosts with
  251.      explicit domains or that are specified by their ip address.
  252.  
  253.   3. Set the variable `efs-local-host-regexp' to machines that you have
  254.      direct TCP/IP access.  In other words, you must be able to ping
  255.      these hosts.  Usually, `efs-ftp-local-host-regexp' and
  256.      `efs-local-host-regexp' will be the same.  However, they will
  257.      differ for so-called transparent gateways.  See below for more
  258.      details.
  259.  
  260.   4. Set the variable `efs-gateway-tmp-name-template' to the name of a
  261.      directory plus an identifying filename prefix for making temporary
  262.      files on the gateway.  For example: `"/tmp/hplose/ange/efs"'
  263.  
  264.   5. If the gateway and the local host share cross-mounted directories,
  265.      set the value of `efs-gateway-mounted-dirs-alist' accordingly. It
  266.      is particularly useful, but not mandatory, that the directory of
  267.      `efs-gateway-tmp-name-template' be cross-mounted.
  268.  
  269.   6. Set the variable `efs-gateway-type' to the type gateway that you
  270.      have.  This variable is a list, the first element of which is a
  271.      symbol denoting the type of gateway.
  272.  
  273. 
  274. File: efs.info,  Node: Gateway types,  Next: Gateway problems,  Prev: Setting up a gateway,  Up: Installing EFS
  275.  
  276. Supported gateway types
  277. =======================
  278.  
  279. `local'
  280.      This means that your local host is itself the gateway.  However,
  281.      it is necessary to use a different FTP client to gain access to
  282.      the outside world.  If the name of the FTP client were xftp, you
  283.      might set `efs-gateway-type' to
  284.  
  285.           (list 'local "xftp" efs-ftp-program-args)
  286.  
  287.      If xftp required special arguments, then give them in place of
  288.      efs-ftp-program-args.
  289.  
  290. `proxy'
  291.      This indicates that your gateway works by first FTP'ing to it, and
  292.      then issuing a `USER' command of the form
  293.  
  294.           USER <username>@<host>
  295.  
  296.      In this case, you might set `efs-gateway-type' to
  297.  
  298.           (list 'proxy "ftp" efs-ftp-program-args)
  299.  
  300.      If you need to use a nonstandard client, such as iftp, give this
  301.      instead of ftp.  If this client needs to take special arguments,
  302.      give them instead of efs-ftp-program-args.
  303.  
  304. `remsh'
  305.      For this type of gateway, you need to start a remote shell on your
  306.      gateway, using either remsh or rsh.  You should set
  307.      EFS-GATEWAY-TYPE to something like
  308.  
  309.           (list 'remsh "remsh" nil "ftp" efs-ftp-program-args)
  310.  
  311.      If you use rsh instead of remsh, change the second element from
  312.      `"remsh"' to `"rsh"'.  Note that the symbol indicating the gateway
  313.      type should still be `'remsh'.  If you want to pass arguments to
  314.      the remsh program, give them as the third element.  For example,
  315.      if you need to specify a user, make this `(list "-l" "sandy")'.
  316.      If you need to use a nonstandard FTP client, specify that as the
  317.      fourth element.  If your FTP client needs to be given special
  318.      arguments, give them instead of `efs-ftp-program-args'.
  319.  
  320. `interactive'
  321.      This indicates that you need to establish a login on the gateway,
  322.      using either telnet or rlogin.  You should set `efs-gateway-type'
  323.      to something like
  324.  
  325.           (list 'interactive "rlogin" nil "exec ftp" efs-ftp-program-args)
  326.  
  327.      If you need to use telnet, then give `"telnet"' in place of the
  328.      second element `"rlogin"'.  If your login program needs to be
  329.      given arguments, then they should be given in the third slot.  The
  330.      fourth element is for the name of the FTP client program.  Giving
  331.      this as `"exec ftp"', instead of `"ftp"', ensures that you are
  332.      logged out if the FTP client dies.  If the FTP client takes
  333.      special arguments, give these instead of `efs-ftp-program-args'.
  334.      Furthermore, you should see the documentation at the top of
  335.      `efs-gwp.el'.  You may need to set the variables
  336.      `efs-gwp-setup-term-command', and `efs-gwp-prompt-pattern'.
  337.  
  338. `raptor'
  339.      This is a type of gateway where efs is expected to specify a
  340.      gateway user, and send a password for this user using the
  341.      `ACCOUNT' command.  For example, to log in to `foobar.edu' as
  342.      sandy, while using the account ange on the gateway, the following
  343.      commands would be sent:
  344.  
  345.           open raptorgate.com
  346.           quote USER sandy@foobar.edu ange
  347.           quote pass <sandy's password on foobar>
  348.           quote account <ange's password on raptorgate>
  349.  
  350.      For such a gateway, you would set `efs-gateway-type' to
  351.  
  352.           (list 'raptor efs-ftp-program efs-ftp-program-args <GATEWAY USER>)
  353.  
  354.      where `<GATEWAY USER>' is the name of your account on the gateway.
  355.      In the above example, this would be `"ange"'.  You can set your
  356.      gateway password by simply setting an account password for the
  357.      gateway host.  This can be done with either efs-set-account, or
  358.      within your .netrc file.  If no password is set, you will be
  359.      prompted for one.
  360.  
  361. `interlock'
  362.      This is a type of gateway where you are expected to send a PASS
  363.      command after opening the connection to the gateway.  The precise
  364.      login sequence is
  365.  
  366.           open interlockgate
  367.           quote PASS <sandy's password on interlockgate>
  368.           quote USER sandy@foobar.edu
  369.           quote PASS <sandy's password on foobar.edu>
  370.  
  371.      For such a gateway, you should set `efs-gateway-type' to
  372.  
  373.           (list 'interlock efs-ftp-program efs-ftp-program-args)
  374.  
  375.      If you need to use a nonstandard name for your FTP client, then
  376.      replace `efs-ftp-program' with this name.  If your FTP client
  377.      needs to take nonstandard arguments, then replace
  378.      `efs-ftp-program-args' with these arguments.
  379.  
  380.      If your gateway returns both a 220 code and a 331 code to the
  381.      `"open interlockgate"' command, then you should add a regular
  382.      expression to `efs-skip-msgs' that matches the 220 response.
  383.      Returning two response codes to a single FTP command is not
  384.      permitted in RFC 959.  It is not possible for efs to ignore the
  385.      220 by default, because than it would hang for interlock
  386.      installations which do not require a password.
  387.  
  388. `kerberos'
  389.      With this gateway, you need to authenticate yourself by getting a
  390.      kerberos "ticket" first.  Usually, this is done with the kinit
  391.      program.  Once authenticated, you connect to `foobar.com' as user
  392.      sandy with the sequence: (Note that the `"-n"' argument inhibits
  393.      automatic login.  Although, in manual use you probably don't use
  394.      it, EFS always uses it.)
  395.  
  396.           iftp -n
  397.           open foobar.com
  398.           user sandy@foobar.com
  399.  
  400.      You should set `efs-gateway-type' to something like
  401.  
  402.           (list 'kerberos "iftp" efs-ftp-program-args "kinit" <KINIT-ARGS>)
  403.  
  404.      If you use an FTP client other than iftp, insert its name instead
  405.      of `"iftp"' above.  If your FTP client needs special arguments,
  406.      give them as a list of strings in place of `efs-ftp-program-args'.
  407.      If the program that you use to collect a ticket in not called
  408.      `"kinit"', then give its name in place of `"kinit"' above.
  409.      `<KINIT-ARGS>' should be any arguments that you need to pass to
  410.      your kinit program, given as a list of strings.  Most likely, you
  411.      will give this as nil.
  412.  
  413.      See the file `efs-kerberos.el' for more configuration variables.
  414.      If you need to adjust any of these variables, please report this
  415.      to us so that we can fix them for other users.
  416.  
  417.      If EFS detects that you are not authenticated to use the gateway,
  418.      it will run the kinit program automatically, prompting you for a
  419.      password.  If you give a password in your `.netrc' file for login
  420.      the value of `efs-gateway-host' and user kerberos, then EFS will
  421.      use this to obtain gateway authentication.
  422.  
  423. `Transparent gateways'
  424.      If your gateway is completely transparent (for example it uses
  425.      socks), then you should set `efs-gateway-type' to `nil'.  Also, set
  426.      `efs-ftp-local-host-regexp' to `".*"'.  However,
  427.      `efs-local-host-regexp', must still be set to a regular expression
  428.      matching hosts in your local domain.  EFS uses this to determine
  429.      which machines that it can open-network-stream to.  Furthermore,
  430.      you should still set `efs-gateway-host' to the name of your
  431.      gateway machine.  That way EFS will know that this is a special
  432.      machine having direct TCP/IP access to both hosts in the outside
  433.      world, and hosts in your local domain.
  434.  
  435. 
  436. File: efs.info,  Node: Gateway problems,  Next: Other options,  Prev: Gateway types,  Up: Installing EFS
  437.  
  438. Common Problems with Gateways
  439. =============================
  440.  
  441. Spurious 220 responses
  442. ----------------------
  443.  
  444.    Some proxy-style gateways (eg gateway type `'proxy' or `'raptor'),
  445. return two 3-digit FTP reply codes to the `USER' command.  For example:
  446.  
  447.      open gateway.weird
  448.      220 Connected to gateway.weird
  449.      quote USER sandy@foobar
  450.      220 Connected to foobar
  451.      331 Password required for sandy
  452.  
  453.    This is wrong, according to the FTP Protocol.  Each command must
  454. return exactly one 3-digit reply code.  It may be preceded by
  455. continuation lines.  What should really be returned is:
  456.  
  457.      quote USER sandy@foobar
  458.      331-Connected to foobar.
  459.      331 Password required for sandy.
  460.  
  461.    or even
  462.  
  463.      quote USER sandy@foobar
  464.      331-220 Connected to foobar.
  465.      331 Password required for sandy.
  466.  
  467.    Even though the `"331-220"' looks strange, it is correct protocol,
  468. and EFS will parse it properly.
  469.  
  470.    If your gateway is returning a spurious 220 to `USER', a work-around
  471. is to add a regular expression to `efs-skip-msgs' that matches this
  472. line.  It must not match the 220 line returned to the open command.
  473. This work-around may not work, as some system FTP clients also get
  474. confused by the spurious 220.  In this case, the only solution is to
  475. patch the gateway server.  In either case, please send a bug report to
  476. the author of your gateway software.
  477.  
  478. Case-sensitive parsing of FTP commands
  479. --------------------------------------
  480.  
  481.    Some gateway servers seem to treat FTP commands case-sensitively.
  482. This is incorrect, as RFC 959 clearly states that FTP commands are
  483. always to be case-insensitive.  If this is a problem with your gateway
  484. server, you should send a bug report to its author.  If efs is using a
  485. case for FTP commands that does not suit your server, a possible
  486. work-around is to edit the efs source so that the required case is
  487. used.  However, we will not be making any changes to the standard EFS
  488. distribution to support this type of server behaviour.  If you need
  489. help changing the efs source, you should enquire with the efs-help
  490. mailing list.
  491.  
  492. 
  493. File: efs.info,  Node: Other options,  Prev: Gateway problems,  Up: Installing EFS
  494.  
  495. Other user options
  496. ==================
  497.  
  498.    Here are other user options available in EFS:
  499.  
  500.    `efs-netrc-filename': The name of a file in `netrc(5)' format that
  501. EFS will use to match hostnames, users and their respective passwords.
  502. Hostnames specified here are also used for hostname completion.  The
  503. default is `"~/.netrc"'.
  504.  
  505.    `efs-default-user': If this is a string, it is the username to use
  506. when none is specified in a filename. If `nil', then the name under
  507. which the user is logged in is used. If non-`nil' but not a string, the
  508. user is prompted for the name. The default is `nil'.
  509.  
  510.    `efs-default-password': The password to use when the user is the
  511. same as `efs-default-user'. The default is `nil'.
  512.  
  513.    `efs-default-account': Account password to use when the user is the
  514. same as `efs-default-user'. The default is `nil'.
  515.  
  516.    `efs-dumb-unix-host-regexp': The FTP servers on some machines have
  517. problems if the `ls' command is used. The usual indication that
  518. something is wrong is when EFS erroneously thinks that a directory is
  519. just a plain file. The routine `efs-add-host' can be called to tell EFS
  520. to limit itself to the `DIR' command and not `ls' for a given host (but
  521. this change will take effect for the current Emacs session only) when
  522. called like this:
  523.  
  524.      (efs-add-host 'dumb-unix "hostname")
  525.  
  526.    If a large number of machines with similar hostnames have this
  527. problem then it is easier to change the value of this variable to a
  528. regexp which matches hostnames which have this problem, particularly
  529. since EFS cannot automatically detect such hosts. The default is `nil'.
  530.  
  531.    `efs-binary-file-name-regexp': By default EFS will transfer files in
  532. ASCII mode. If a file being transferred matches the value of this
  533. regexp then the FTP process will be toggled into BINARY mode before the
  534. transfer and back to ASCII mode after the transfer. The default is:
  535.        (concat "\\." ; the dot
  536.            ;; extensions
  537.            "\\([zZ]\\|t?gz\\|lzh\\|arc\\|zip\\|zoo\\|ta[rz]\\|dvi\\|sit\\|"
  538.            "ps\\|elc\\|gif\\|Z-part-..\\|tpz\\|exe\\|[jm]pg\\|TZ[a-z]?\\|lib\\)"
  539.            "\\(~\\|~[0-9]+~\\)?$" ; backups
  540.            "\\|"
  541.            ;; UPPER CASE LAND
  542.            "\\."
  543.            "\\(ARC\\|ELC\\|TAGS\\|EXE\\|ZIP\\|DVI\|ZOO\\|GIF\\|T?GZ\\|"
  544.            "[JM]PG\\)"
  545.            "\\([.#;][0-9]+\\)?$" ; versions
  546.            )
  547.  
  548.    `efs-hash-mark-size': EFS by default requests that the FTP process
  549. sends hash marks (just `#' characters) during transfers to keep track
  550. of how much data has been sent or received. This variable, if
  551. non-`nil', should be the number of kilobytes represented by the FTP
  552. client's hash mark. The default value of 1 doesn't work for me -- I use
  553. 2 instead.
  554.  
  555.    `efs-verbose': If this is `t' then EFS will be chatty about
  556. interaction with the FTP process. The default is `t'.
  557.  
  558.    `efs-ftp-program-name': This should be the name of the FTP program
  559. to run on the local host. The default value of `"ftp"' should be fine
  560. for most systems.
  561.  
  562.    `efs-make-backup-files': A list of operating systems for which EFS
  563. will make Emacs backup files on the remote host. For example, `'(unix)'
  564. makes sense, but `'(unix vms)' or `'(vms)' would be silly, since VMS
  565. makes its own backups.  The host type is determined by the function
  566. `efs-host-type'.  Possible host types are: `dumb-unix'; `vos'; `vms';
  567. `mts'; and `unix'. The default of `nil' means make no backups on remote
  568. hosts.
  569.  
  570.    `efs-skip-msgs': A regular expression matching messages from the ftp
  571. process that can be ignored. The default is
  572.        (concat
  573.         "^110 \\|" ; Restart marker reply.
  574.         "^125 \\|" ; Data connection already open; transfer starting.
  575.         "^150 ") ; File status OK; about to open connection.
  576.  
  577. but you might need to tweak it if EFS is giving up when it shouldn't.
  578.  
  579.    `efs-fatal-msgs': A regular expression matching messages from the
  580. FTP process that indicate something has gone drastically wrong
  581. attempting the action that was initiated and that the FTP process should
  582. (or already has) been killed. The default is
  583.      (concat
  584.         ;; RFC959 codes
  585.         "^221 \\|" ; Service closing control connection.
  586.         "^421 \\|" ; Service not available.
  587.         "^425 \\|" ; Can't open data connection.
  588.         "^426 \\|" ; Connection closed, transfer aborted.
  589.         "^451 \\|" ; Requested action aborted, local error in processing.
  590.         ;; RFC959 non-compliant codes
  591.         "^552 Maximum Idle Time Exceded\\.$\\|" ; Hellsoft server uses this to
  592.                             ; indicate a timeout. 552 is
  593.                             ; supposed to be used for exceeded
  594.                             ; storage allocation. Note that
  595.                             ; they also misspelled the error
  596.                             ; message.
  597.         ;; client problems
  598.         "^ftp: \\|^Not connected\\|^rcmd: \\|^No control connection\\|"
  599.         "^unknown host\\|: unknown host$\\|^lost connection\\|"
  600.         "^[Ss]egmentation fault\\|"
  601.         ;; Make sure that the "local: " isn't just a message about a file.
  602.         "^local: [^/]\\|"
  603.         ;; Gateways
  604.         "^iftp: cannot authenticate to server\\b"
  605.         )
  606.  
  607.    `efs-gateway-fatal-msgs': Regular expression matching messages from
  608. the rlogin / telnet process that indicates that logging in to the
  609. gateway machine has gone wrong. The default is
  610.      "No route to host\\|Connection closed\\|No such host\\|Login incorrect"
  611.  
  612.    `efs-tmp-name-template': This should be a directory and a filename
  613. prefix indicating where EFS should make temporary files.  The default
  614. of `"/tmp/efs"' should be fine for most systems.
  615.  
  616.    `efs-retry-time': Number of seconds to wait before retrying if a
  617. file or listing doesn't arrive. For slow connections, you might get a
  618. "listing unreadable" error messages or an empty buffer for a file that
  619. you know has something in it.  The solution is to increase the value of
  620. `efs-retry-time'.  Its default value is 5 which is plenty for
  621. reasonable connections.  However, for some transatlantic connections 20
  622. might be a better value.
  623.  
  624. 
  625. File: efs.info,  Node: Using EFS,  Next: Getting help,  Prev: Installing EFS,  Up: Top
  626.  
  627. Using EFS
  628. *********
  629.  
  630.    Once installed, efs operates largely transparently. All files
  631. normally accessible to you on the internet, become part of a large
  632. virtual file system. These files are accessed using an extended file
  633. name syntax. To access file `<path>' on remote host `<host>' by logging
  634. in as user `<user>', you simply specify the full path of the file as
  635. `/<user>@<host>:<path>'. Nearly all Emacs file handling functions work
  636. for remote files. It is not possible to access remote files using shell
  637. commands in an emacs *shell* buffer, as such commands are passed
  638. directly to the shell, and not handled by emacs.
  639.  
  640.    FTP is the underlying utility that efs uses to operate on remote
  641. files.
  642.  
  643.    For example, if `find-file' is given a filename of:
  644.  
  645.      /ange@anorman:/tmp/notes
  646.  
  647.    then EFS will spawn an FTP process, connect to the host 'anorman' as
  648. user 'ange', get the file `/tmp/notes' and pop up a buffer containing
  649. the contents of that file as if it were on the local file system.  If
  650. efs needed a password to connect then it would prompt the user in the
  651. minibuffer. For further discussion of the EFS path syntax, see the
  652. paragraph on extended file name syntax *Note Remote filenames::.
  653.  
  654.    Full file-name completion is supported on every type of remote host.
  655. To do filename completion, EFS needs a listing from the remote host.
  656. Therefore, for very slow connections, it might not save any time.
  657. However, the listing is cached, so subsequent uses of file-name
  658. completion will be just as fast as for local file names.
  659.  
  660. * Menu:
  661.  
  662. * Ports::                       Using nonstandard ports.
  663. * Remote filenames::            The EFS extended filename syntax.
  664. * Passwords::
  665. * Using Dired::                 Browsing directories.
  666. * Using a .netrc::              Preventing password pestering.
  667. * EFS commands::                Interactive commands supplied by EFS.
  668. * FTP processes::               How EFS does its work
  669. * Tips::                        Some stuff to help you use EFS
  670. * DL support::                  Descriptive directory listings
  671. * Non-Unix Hosts::              Some of what you want to know
  672. * Completion::                  Works but has its price
  673. * Accessing the FTP process::   ... manually
  674.  
  675. 
  676. File: efs.info,  Node: Ports,  Next: Remote filenames,  Prev: Using EFS,  Up: Using EFS
  677.  
  678. Using nonstandard ports
  679. =======================
  680.  
  681.    EFS supports the use of nonstandard ports on remote hosts.  To
  682. specify that port `<port>' should be used, give the host name as
  683. `host#<port>'. Host names may be given in this form anywhere that efs
  684. normally expects a host name. This includes in the `.netrc' file.
  685. Logically, EFS treats different ports to correspond to different remote
  686. hosts.
  687.  
  688. 
  689. File: efs.info,  Node: Remote filenames,  Next: Passwords,  Prev: Ports,  Up: Using EFS
  690.  
  691. Extended filename syntax
  692. ========================
  693.  
  694.    The default full EFS path syntax is
  695.  
  696.      /<user>@<host>#<port>:<path>
  697.  
  698.    Both the `#<port>''and `<user>@' may be omitted.
  699.  
  700.    If the `#<port>' is omitted, then the default port is taken to be 21,
  701. the usual FTP port. For most users, the port syntax will only very
  702. rarely be necessary.
  703.  
  704.    If the `<user>@' is omitted, then EFS will use a default user.  If a
  705. login token is specified in your `.netrc' file, then this will be used
  706. as the default user for `<host>'.  Otherwise, it is determined based on
  707. the value of the variable `efs-default-user'.
  708.  
  709.    This EFS path syntax can be customised to a certain extent by
  710. changing a number of variables.  To undertake such a customization
  711. requires some knowledge about the internal workings of EFS.
  712.  
  713. 
  714. File: efs.info,  Node: Passwords,  Next: Using Dired,  Prev: Remote filenames,  Up: Using EFS
  715.  
  716. Passwords
  717. =========
  718.  
  719.    A password is required for each host / user pair.  This will be
  720. prompted for when needed, unless already set by calling
  721. `efs-set-passwd', or specified in a *valid* `~/.netrc' file.
  722.  
  723.    When EFS prompts for a password, it provides defaults from its cache
  724. of currently known passwords.  The defaults are ordered such that
  725. passwords for accounts which have the same user name as the login which
  726. is currently underway have priority. You can cycle through your list of
  727. defaults with `C-n' to cycle forwards and `C-p' to cycle backwards. The
  728. list is circular.
  729.  
  730. Passwords for anonymous user
  731. ----------------------------
  732.  
  733.    Passwords for the user anonymous (or ftp) are handled specially.
  734. The variable `efs-generate-anonymous-password' controls what \vindex
  735. efs-generate-anonymous-password happens. If the value of this variable
  736. is a string, then this is used as the password; if non-`nil', then a
  737. password is created from the name of the user and the hostname of the
  738. machine on which Emacs is running; if `nil' (the default) then the user
  739. is prompted for a password as normal.
  740.  
  741. Account passwords
  742. -----------------
  743.  
  744.    Some FTP servers require an additional password which is sent by the
  745. `ACCOUNT' command.  EFS will detect this and prompt the user for an
  746. account password if the server expects one.  Also, an account password
  747. can be set by calling `efs-set-account', or by specifying an account
  748. token in the `.netrc' file.
  749.  
  750.    Some operating systems, such as CMS, require that `ACCOUNT' be used
  751. to give a write access password for minidisks.  `efs-set-account' can be
  752. used to set a write password for a specific minidisk. Also, tokens of
  753. the form
  754.  
  755.      minidisk <minidisk name> <password>
  756.  
  757.    may be added to host lines in your `.netrc' file. Minidisk tokens
  758. must be at the end of the host line, however there may be an arbitrary
  759. number of them for any given host.
  760.  
  761. 
  762. File: efs.info,  Node: Using Dired,  Next: Using a .netrc,  Prev: Passwords,  Up: Using EFS
  763.  
  764. Using Dired
  765. ===========
  766.  
  767.    This feature of EFS is particularly useful when file transfers, as
  768. opposed to file editing, are the order of the day. Simply run
  769. `find-file' on a directory to get a listing of the files in that
  770. directory. For example, you might run `find-file' on
  771.      /anonymous@archive.site.com:pub
  772.  
  773. to see what's in the `pub' directory of your favourite archive site.
  774. This brings up a Dired buffer of all the files in that directory.  The
  775. `f' command is useful for looking at `README' files -- if you then
  776. decide to save it `C-x C-w' is useful. You can also use this method to
  777. copy files, but the `c' command is easier. The `f' command can also be
  778. used to descend the directory tree by applying it to directories.
  779.  
  780.    You can also use Dired to refresh EFS's internal cache. If you (or
  781. anybody else) has changed a remote directory since you first accessed it
  782. with EFS, completion is not provided on any new files that EFS does not
  783. know about. If you have (or create) a Dired buffer which contains the
  784. modified directory, executing `revert-buffer' with a prefix argument
  785. (`C-u g' in the Dired buffer) will force a refresh of both the the
  786. buffer *and also EFS's internal cache*. If you find that filename
  787. completion isn't working on a file that you *know* is there, this is
  788. how to fix the problem.
  789.  
  790.    Dired provides facilities for maintaining an entire directory tree
  791. in a Dired buffer, for marking files which match a certain regexp (or
  792. you can select files interactively) and then copying all those files to
  793. your local host (or even a different remote host).  Another useful
  794. feature is Virtual Dired, which allows you to save Dired buffers of
  795. remote hosts, allowing you to browse them at a later date without
  796. actually needing to connect to the host.
  797.  
  798. 
  799. File: efs.info,  Node: Using a .netrc,  Next: EFS commands,  Prev: Using Dired,  Up: Using EFS
  800.  
  801. Using a .netrc file
  802. ===================
  803.  
  804.    Being prompted for passwords all the time can get rather annoying,
  805. but there is a way to fix the problem -- a `.netrc' (but *Note Other
  806. options:: and `efs-netrc-filename' if you want another filename) file
  807. in your home directory. Basically, this is a file (in the format of
  808. Unix `netrc(5)') which contains the names of all the machines you
  809. regularly login to, as well as the username and password you use for
  810. that machine. You can also supply an account password, if required.
  811.  
  812.    Your `.netrc' file consists of lines of the form
  813.      machine <machine-name> login <user-name> password <password>
  814.  
  815. It doesn't all have to be on the one line, though: any `login' or
  816. `password' commands in the file refer to the previous `machine'
  817. command. You can also have `account <account-passwd>' commands if you
  818. need special account passwords.
  819.  
  820.    For example, you might have the following line in your `.netrc':
  821.      machine Y.local.lan.edu login myname password secret
  822.  
  823. Then if you run `find-file' on the file `/Y.local.lan.edu:somefile' you
  824. will automatically be logged in as user `myname' with password
  825. `secret'. You can still login under another name and password, if you
  826. so desire: just include the `user@' part of the filename.
  827.  
  828.    You may also include a default option, as follows:
  829.      default login <user-name> password <password>
  830.  
  831. which applies to any other machines not mentioned elsewhere in your
  832. `.netrc'. A particularly useful application of this is with anonymous
  833. logins:
  834.      default login myname password myname@myhost.edu
  835.  
  836. so that accessing `/anyhost:anyfile' will automatically log you in
  837. anonymously, provided the host is not mentioned in the `.netrc'.  Note
  838. also that if the value of `efs-default-user' is non-`nil', its value
  839. will have precedence over the username supplied in the default option
  840. of the `.netrc'.
  841.  
  842.    The `.netrc' file is also useful in another regard: machines
  843. included in it are provided with hostname completion. That is, for any
  844. machine in the `.netrc', you need only type a slash and the first few
  845. characters of its name and then press <TAB> to be logged in
  846. automatically with a username and password from the `.netrc' file.  So
  847. it's a good idea to put hosts you use regularly in your `.netrc' as
  848. well:
  849.      machine archive.site.com login anonymous password myname@X.local.lan.edu
  850.  
  851. 
  852. File: efs.info,  Node: EFS commands,  Next: FTP processes,  Prev: Using a .netrc,  Up: Using EFS
  853.  
  854. EFS commands
  855. ============
  856.  
  857.    EFS supplies a few interactive commands to make connecting with
  858. hosts a little easier.
  859.  
  860. Command `efs-set-user': Prompts for a hostname and a username.  Next
  861. time access to the host is attempted, EFS will attempt to log in again
  862. with the new username.
  863.  
  864. Command `efs-set-passwd': Prompts for a hostname, user and password.
  865. Future logins to that host as that user will use the given password.
  866.  
  867. Command `efs-set-account': Prompts for a hostname, user and account.
  868. Future logins to that host as that user will use the given account.
  869.  
  870.    Note that the effects of the above three commands only last the
  871. duration of the current Emacs session. To make their effects permanent,
  872. you may include them as lisp code in your `.emacs':
  873.      (efs-set-user HOST USER)
  874.      (efs-set-password HOST USER PASSWORD)
  875.      (efs-set-account HOST USER ACCOUNT)
  876.  
  877. This is an alternative to using a `.netrc'; *Note Using a .netrc::.
  878.  
  879. Command `efs-kill-ftp-process': kill the FTP process associated with a
  880. given buffer's filename (by default the current buffer). This is an
  881. easy way to achieve a resynch: any future accesses to the remote host
  882. will cause the FTP process to be recreated.
  883.  
  884. 
  885. File: efs.info,  Node: FTP processes,  Next: Tips,  Prev: EFS commands,  Up: Using EFS
  886.  
  887. FTP processes
  888. =============
  889.  
  890.    When EFS starts up an FTP process, it leaves it running for speed
  891. purposes.  Some FTP servers will close the connection after a period of
  892. time, but EFS should be able to quietly reconnect the next time that
  893. the process is needed.
  894.  
  895.    The FTP process will be killed should the associated `*ftp
  896. user@host*' buffer be deleted.  This should not cause efs any grief.
  897.  
  898. Showing background FTP activity on the mode-line
  899. ------------------------------------------------
  900.  
  901.    After EFS is loaded, the command `efs-display-ftp-activity' will
  902. cause background FTP activity to be displayed on the mode line. The
  903. variable `efs-mode-line-format' is used to determine how this data is
  904. displayed.  efs does not continuously track the number of active
  905. sessions, as this would cause the display to change too rapidly.
  906. Rather, it uses a heuristic algorithm to determine when there is a
  907. significant change in FTP activity.
  908.  
  909. File types
  910. ----------
  911.  
  912.    By default EFS will assume that all files are ASCII. If a file being
  913. transferred matches the value of `efs-binary-file-name-regexp' then the
  914. file will be assumed to be a binary file, and EFS will transfer it
  915. using "type image". ASCII files will be transferred using a transfer
  916. type which efs computes to be correct according to its knowledge of the
  917. file system of the remote host. The command
  918. `efs-prompt-for-transfer-type' toggles the variable
  919. `efs-prompt-for-transfer-type'. When this variable is non-`nil', EFS
  920. will prompt the user for the transfer type to use for every FTP
  921. transfer.  Having this set all the time is annoying, but it is useful
  922. to give special treatment to a small set of files.  There is also a
  923. variable `efs-text-file-name-regexp'.  This is tested before
  924. `efs-binary-file-name-regexp', so if you set
  925. `efs-text-file-name-regexp' to a non-trivial regular expression, and
  926. `efs-binary-file-name-regexp' to `".*"', the result will to make image
  927. the default tranfer type.
  928.  
  929.    Also, if you set `efs-treat-crlf-as-nl', then EFS will use type image
  930. to transfer files between hosts whose file system differ only in that
  931. one specifies end of line as CR-LF, and the other as NL.  This is useful
  932. if you are transferring files between UNIX and DOS machines, and have a
  933. package such as `dos-mode.el', that handles the extra <^M>'s.
  934.  
  935. Status reports
  936. --------------
  937.  
  938.    Most EFS commands that talk to the FTP process output a status
  939. message on what they are doing.  In addition, efs can take advantage of
  940. the FTP client's `HASH' command to display the status of transferring
  941. files and listing directories.  See the documentation for the variables
  942. `efs-hash-mark-size', `efs-send-hash' and `efs-verbose' for more
  943. details.
  944.  
  945. Caching of directory information
  946. --------------------------------
  947.  
  948.    EFS keeps an internal cache of file listings from remote hosts.  If
  949. this cache gets out of synch, it can be renewed by reverting a dired
  950. buffer for the appropriate directory (`dired-revert' is usually bound
  951. to `g').
  952.  
  953.    Alternatively, you can add the following two lines to your `.emacs'
  954. file if you want `C-r' to refresh EFS's cache whilst doing filename
  955. completion.
  956.  
  957.      (define-key minibuffer-local-completion-map "\C-r" 'efs-re-read-dir)
  958.      (define-key minibuffer-local-must-match-map "\C-r" 'efs-re-read-dir)
  959.  
  960. 
  961. File: efs.info,  Node: Tips,  Next: DL support,  Prev: FTP processes,  Up: Using EFS
  962.  
  963. Tips for using EFS
  964. ==================
  965.  
  966.   1. Beware of compressing files on non-UNIX hosts. EFS will do it by
  967.      copying the file to the local machine, compressing it there, and
  968.      then sending it back. Binary file transfers between machines of
  969.      different architectures can be a risky business. Test things out
  970.      first on some test files. *Note Bugs:: Also, note that EFS
  971.      sometimes copies files by moving them through the local machine.
  972.      Again, be careful when doing this with binary files on non-Unix
  973.      machines.
  974.  
  975.   2. Beware that dired over ftp will use your setting of
  976.      `dired-no-confirm' (list of dired commands for which confirmation
  977.      is not asked).  You might want to reconsider your setting of this
  978.      variable, because you might want confirmation for more commands on
  979.      remote direds than on local direds. For example, I strongly
  980.      recommend that you not include compress in this list. If there is
  981.      enough demand it might be a good idea to have an alist
  982.      `efs-dired-no-confirm' of pairs `( TYPE . LIST )', where `TYPE' is
  983.      an operating system type and `LIST' is a list of commands for which
  984.      confirmation would be suppressed.  Then remote dired listings
  985.      would take their (buffer-local) value of `dired-no-confirm' from
  986.      this alist. Who votes for this?
  987.  
  988.   3. Some combinations of FTP clients and servers break and get out of
  989.      sync when asked to list a non-existent directory.  Some of the
  990.      ai.mit.edu machines cause this problem for some FTP clients. Using
  991.      `efs-kill-ftp-process' can be used to restart the ftp process,
  992.      which should get things back in synch.
  993.  
  994.   4. Some ftp servers impose a length limit on the password that can be
  995.      sent. If this limit is exceeded they may bomb in an
  996.      incomprehensible way. This sort of behaviour is common with MVS
  997.      servers. Therefore, you should beware of this possibility if you
  998.      are generating a long password (like an email address) with
  999.      `efs-generate-anonymous-password'.
  1000.  
  1001.   5. Some antiquated FTP servers hang when asked for an `RNFR' command.
  1002.      EFS sometimes uses this to test whether its local cache is stale.
  1003.      If your server for `HOST' hangs when asked for this command, put
  1004.  
  1005.           (efs-set-host-property HOST 'rnfr-failed t)
  1006.  
  1007.      in your `efs-ftp-startup-function-alist' entry for `HOST'.
  1008.  
  1009.   6. The FTP servers on some Unix machines have problems if the `ls'
  1010.      command is used.  EFS will try to correct for this automatically,
  1011.      and send the `dir' command instead.  If it fails, you can call the
  1012.      function `efs-add-host', and give the host type as `dumb-unix'.
  1013.      Note that this change will take effect for the current Emacs
  1014.      session only. To make this specification for future emacs
  1015.      sessions, put
  1016.  
  1017.           (efs-add-host 'dumb-unix "hostname")
  1018.  
  1019.      in your `.emacs' file. Also, please report any failure to
  1020.      automatically recognize dumb unix to the "bugs" address given
  1021.      below, so that we can fix the auto recognition code.
  1022.  
  1023.  
  1024. 
  1025. File: efs.info,  Node: DL support,  Next: Non-Unix Hosts,  Prev: Tips,  Up: Using EFS
  1026.  
  1027. Descriptive directory listings
  1028. ==============================
  1029.  
  1030.    Some hosts (such as `cs.uwp.edu') now use descriptive directory
  1031. listings (which in fact contain *less* information than the standard
  1032. listing!) when issued the `ls' command, and EFS has been modified to
  1033. cope with this. EFS can detect such listings, but if you regularly use
  1034. a remote host which uses this extended listing format you should set
  1035. the variable `efs-dl-dir-regexp' to a regular expression which matches
  1036. directories using the extended listing format. You shouldn't anchor the
  1037. regexp with `$' - that way the regexp will match subdirectories as
  1038. well.  Alternatively, you can use the interactive command
  1039. `efs-add-dl-dir' to temporarily add a remote directory for this Emacs
  1040. session only.
  1041.  
  1042.    Dired has been modified to work with such descriptive listings.
  1043.  
  1044. 
  1045. File: efs.info,  Node: Non-Unix Hosts,  Next: Completion,  Prev: DL support,  Up: Using EFS
  1046.  
  1047. Using EFS with non-Unix hosts
  1048. =============================
  1049.  
  1050.    EFS also works with some non-Unix hosts, although not necessarily
  1051. with all the features available with Unix hosts. VMS, CMS, and MTS
  1052. systems will all now work with EFS and Dired.  It also works with a
  1053. whole bunch of others, but documentation for that has not been written
  1054. yet.  This section was taken straight from the ange-ftp manual, and is
  1055. therefore in all likelihood out-of-date.
  1056.  
  1057.    EFS should be able to automatically detect which type of host you
  1058. are using (VMS, CMS or MTS), but if it is unable to do so you can fix
  1059. the problem by setting the appropriate `efs-TYPE-host-regexp' variable
  1060. (where `TYPE' is one of `vms', `cms' or `mts') - see below. If EFS is
  1061. unable to automatically detect any VMS, CMS or MTS host, please report
  1062. this as a bug: *Note Bugs::.
  1063.  
  1064.    In all cases the file-name conventions of the remote host are
  1065. converted to a UNIX-ish format, and this is the format you should use
  1066. to find files on such hosts.
  1067.  
  1068. * Menu:
  1069.  
  1070. * VMS support::                 Using EFS with VMS systems
  1071. * CMS support::                 Using EFS with CMS systems
  1072. * MTS support::                 Using EFS with MTS systems
  1073.  
  1074. 
  1075. File: efs.info,  Node: VMS support,  Next: CMS support,  Prev: Non-Unix Hosts,  Up: Non-Unix Hosts
  1076.  
  1077. VMS support
  1078. -----------
  1079.  
  1080.    VMS filenames are of the form `FILE.TYPE;##', where both `FILE' and
  1081. `TYPE' can be up to 39 characters long, and `##' is an integer version
  1082. number between 1 and 32,767. Valid characters in filenames are `A'-`Z',
  1083. `0'-`9', `_', `-' and `$', however `$' cannot begin a filename and `-'
  1084. cannot be used as the first or last character.
  1085.  
  1086.    Directories in VMS are converted to the standard UNIX `/' notation.
  1087. For example, the VMS filename
  1088.      PUB$:[ANONYMOUS.SDSCPUB.NEXT]README.TXT;1
  1089.    would be entered as
  1090.  
  1091.      /PUB$$:/ANONYMOUS/SDSCPUB/NEXT/README.TXT;1
  1092.  
  1093. (The double `$' is required to prevent Emacs from attempting to expand
  1094. an environment variable.)  Similarly, to anonymously FTP the file
  1095. `[.CSV.POLICY]RULES.MEM;1' from `ymir.claremont.edu' you would type
  1096. `C-x C-f /anonymous@ymir.claremont.edu:CSV/POLICY/RULES.MEM;1'. You can
  1097. always drop off the `;##' part at the end of the filename to get the
  1098. latest version.
  1099.  
  1100.    Sandy Rutherford provides some tips for using VMS hosts:
  1101.    * Although VMS is not case sensitive, EMACS running under UNIX is.
  1102.      Therefore, to access a VMS file, you must enter the filename with
  1103.      upper case letters.
  1104.  
  1105.    * To access the latest version of file under VMS, you use the
  1106.      filename without the `;' and version number. You should always
  1107.      edit the latest version of a file. If you want to edit an earlier
  1108.      version, copy it to a new file first. This has nothing to do with
  1109.      EFS, but is simply good VMS operating practice. Therefore, to edit
  1110.      `FILE.TXT;3' (say 3 is latest version), do `C-x C-f
  1111.      /ymir.claremont.edu:FILE.TXT'. If you inadvertently do
  1112.           C-x C-f /ymir.claremont.edu:FILE.TXT;3
  1113.  
  1114.      you will find that VMS will not allow you to save the file because
  1115.      it will refuse to overwrite `FILE.TXT;3', but instead will want to
  1116.      create `FILE.TXT;4', and attach the buffer to this file. To get
  1117.      out of this situation, `M-x write-file
  1118.      /ymir.claremont.edu:FILE.TXT' will attach the buffer to latest
  1119.      version of the file. For this reason, in Dired `f'
  1120.      (`dired-find-file'), always loads the file sans version, whereas
  1121.      `v', (`dired-view-file'), always loads the explicit version
  1122.      number. The reasoning being that it reasonable to view old
  1123.      versions of a file, but not to edit them.
  1124.  
  1125.    * VMS filenames often contain `$' characters: make sure you always
  1126.      quote these as `$$' and watch out for the Emacs bug which fails to
  1127.      quote `$''s when defaults are presented in the minibuffer: see
  1128.      *Note Bugs::.
  1129.  
  1130.    EFS should automatically detect that you are using a VMS host. If it
  1131. fails to do so (which should be reported as a bug) you can use the
  1132. command `efs-add-vms-host' to inform EFS manually. For a more permanent
  1133. effect, or if you use a VMS host regularly, it's a good idea to set
  1134. `efs-vms-host-regexp' to a regular expression matching that host's
  1135. name. For instance, if use use `ymir.claremont.edu' a lot, place the
  1136. following in your .emacs:
  1137.      (setq efs-vms-host-regexp "^ymir.claremont.edu$")
  1138.  
  1139. 
  1140. File: efs.info,  Node: CMS support,  Next: MTS support,  Prev: VMS support,  Up: Non-Unix Hosts
  1141.  
  1142. CMS support
  1143. -----------
  1144.  
  1145.    EFS has full support, including Dired support, for hosts running CMS.
  1146.  
  1147.    CMS filenames are entered in a UNIX-y way. Minidisks are treated as
  1148. UNIX directories; for example to access the file `READ.ME' in minidisk
  1149. `*.311' on `cuvmb.cc.columbia.edu', you would enter
  1150.      /anonymous@cuvmb.cc.columbia.edu:/*.311/READ.ME
  1151.    If `*.301' is the default minidisk for this account, you could access
  1152. `FOO.BAR' on this minidisk as
  1153.      /anonymous@cuvmb.cc.columbia.edu:FOO.BAR
  1154.    CMS filenames are of the form `FILE.TYPE', where both `FILE' and
  1155. `TYPE' can be up to 8 characters. Again, beware that CMS filenames are
  1156. always upper case, and hence must be entered as such.
  1157.  
  1158.    Sandy Rutherford provides some tips on using CMS hosts:
  1159.    * CMS machines, with the exception of anonymous accounts, nearly
  1160.      always need an account password. To have EFS send an account
  1161.      password, you can either include it in your `.netrc' (*Note Using
  1162.      a .netrc::), or use `efs-set-account'.
  1163.  
  1164.    * EFS cannot send "write passwords" for a minidisk. Hopefully, we
  1165.      can fix this.
  1166.  
  1167.    EFS should automatically detect that you are using a CMS host. If it
  1168. fails to do so (which should be reported as a bug) you can use the
  1169. command `efs-add-cms-host' to inform EFS manually. For a more permanent
  1170. effect, or if you use a CMS host regularly, it's a good idea to set
  1171. `efs-cms-host-regexp' to a regular expression matching that host's name.
  1172.  
  1173. 
  1174. File: efs.info,  Node: MTS support,  Prev: CMS support,  Up: Non-Unix Hosts
  1175.  
  1176. MTS support
  1177. -----------
  1178.  
  1179.    EFS has full support, including Dired support, for hosts running the
  1180. Michigan terminal system, and should be able to automatically recognise
  1181. any MTS machine.
  1182.  
  1183.    MTS filenames are entered in a UNIX-y way. For example, if your
  1184. account was `YYYY', the file `FILE' in the account `XXXX:' on
  1185. `mtsg.ubc.ca' would be entered as
  1186.      /YYYY@mtsg.ubc.ca:/XXXX:/FILE
  1187.    In other words, MTS accounts are treated as UNIX directories. Of
  1188. course, to access a file in another account, you must have access
  1189. permission for it.  If `FILE' were in your own account, then you could
  1190. enter it in a relative path fashion as
  1191.      /YYYY@mtsg.ubc.ca:FILE
  1192.    MTS filenames can be up to 12 characters. Like UNIX, the structure
  1193. of the filename does not contain a type (i.e. it can have as many `.''s
  1194. as you like.) MTS filenames are always in upper case, and hence be sure
  1195. to enter them as such! MTS is not case sensitive, but an EMACS running
  1196. under UNIX is.
  1197.  
  1198.    EFS should automatically detect that you are using an MTS host. If
  1199. it fails to do so (which should be reported as a bug) you can use the
  1200. command `efs-add-mts-host' to inform EFS manually. For a more permanent
  1201. effect, or if you use an MTS host regularly, it's a good idea to set
  1202. `efs-mts-host-regexp' to a regular expression matching that host's name.
  1203.  
  1204. 
  1205. File: efs.info,  Node: Completion,  Next: Accessing the FTP process,  Prev: Non-Unix Hosts,  Up: Using EFS
  1206.  
  1207. File- and host-name completion
  1208. ==============================
  1209.  
  1210.    Full filename completion is supported on all remote UNIX hosts and
  1211. some non-Unix hosts.  Hostnames also have completion if they are
  1212. mentioned in the `.netrc' and no username is specified. However using
  1213. the filename completion feature can be a bit of a two edged sword.
  1214.  
  1215.    To understand why, we need to discuss how EFS works. Whenever EFS is
  1216. asked to find a remote file (or directory) an `ls' command is sent to
  1217. the FTP process to list all the files in the directory. This list is
  1218. maintained in an internal cache, to provide filename completion for
  1219. later requests on that directory. EFS keeps this cache up-to-date by
  1220. monitoring Emacs commands which affect files and directories, but if a
  1221. process outside Emacs (such as another user) changes a directory (e.g.
  1222. a new file is added) completion won't work on that file since EFS
  1223. doesn't know about it yet. The solution if to force EFS to reread the
  1224. directory and update it's cache, and the easiest way to do that is with
  1225. Dired -- *Note Using Dired:: to see how.
  1226.  
  1227.    Another problem is that the `ls' command can take a long time,
  1228. especially when dealing with distant hosts over slow links. So if you're
  1229. after a file in the `pub/images' directory but nothing else, it's a
  1230. better idea to type `pub/images/file <TAB>' than `pub/im <TAB>' which
  1231. will force a read of the `pub' directory (since EFS needs to know how
  1232. to complete `im'). A little extra typing can often save a lot of
  1233. waiting. Don't be afraid to use the <TAB> key once the directory is
  1234. cached, though.
  1235.  
  1236. 
  1237. File: efs.info,  Node: Accessing the FTP process,  Prev: Completion,  Up: Using EFS
  1238.  
  1239. Accessing the FTP process buffer
  1240. ================================
  1241.  
  1242.    The FTP process used to access the remote files is available for
  1243. access if you wish. It will be in a buffer called `"*ftp
  1244. REMOTE-FILE-NAME*"', i.e. if you found the file
  1245.      /anonymous@archive.site.com:pub/README
  1246.  
  1247. there will be a buffer
  1248.      *ftp anonymous@archive.site.com*
  1249.  
  1250. where all the transfers are taking place. You can have a look at the
  1251. buffer using `C-x b' as usual, and even type in commands to the FTP
  1252. process under an interface very much like `shell-mode'. There are two
  1253. instances when doing this can be very useful: one is accessing non-UNIX
  1254. hosts, where Dired and filename completion may not work (if EFS even
  1255. works at all).  If you are going to use `mget' or `mput', make sure you
  1256. type `glob' first: EFS turns globbing off by default. Don't be afraid
  1257. of changing directories, either -- EFS always uses absolute pathnames
  1258. when communicating with the FTP process.
  1259.  
  1260.    You can kill the FTP process at any time simply by killing this
  1261. buffer.  You can also call `efs-kill-ftp-process'.  This won't cause
  1262. EFS any grief whatsoever -- if you later make another request to that
  1263. host, EFS will simply fire up another process and create a new buffer
  1264. to hold it.
  1265.  
  1266. 
  1267. File: efs.info,  Node: Getting help,  Next: Bugs,  Prev: Using EFS,  Up: Top
  1268.  
  1269. Getting help
  1270. ************
  1271.  
  1272.    EFS has its own mailing list called efs-help.  All users of EFS are
  1273. welcome to subscribe (see below) and to discuss aspects of EFS.
  1274.  
  1275.    To [un]subscribe to efs-help, or to report mailer problems with the
  1276. list, please mail one of the following addresses:
  1277.  
  1278.      efs-help-request@cuckoo.hpl.hp.com
  1279.    or
  1280.      efs-help-request%cuckoo.hpl.hp.com@hplb.hpl.hp.com
  1281.  
  1282.    Please don't forget the -request part.
  1283.  
  1284.    For mail to be posted directly to efs-help, send to one of the
  1285. following addresses:
  1286.  
  1287.      efs-help@cuckoo.hpl.hp.com
  1288.    or
  1289.      efs-help%cuckoo.hpl.hp.com@hplb.hpl.hp.com
  1290.  
  1291.    Alternatively, there is a mailing list that only gets announcements
  1292. of new EFS releases.  This is called efs-announce, and can be
  1293. subscribed to by e-mailing to the -request address as above.  Please
  1294. make it clear in the request which mailing list you wish to join.
  1295.  
  1296.    Mailing list archives are also accessible from this web page:
  1297.  
  1298.      http://www-uk.hpl.hp.com/people/ange/efs
  1299.  
  1300. 
  1301. File: efs.info,  Node: Bugs,  Next: Concept Index,  Prev: Getting help,  Up: Top
  1302.  
  1303. Bugs and Wish List
  1304. ******************
  1305.  
  1306.    If you find any bugs or problems with this package, *please* e-mail
  1307. the authors. Ideas and constructive comments are especially welcome. So
  1308. are any enhancements to EFS, preferably debugged and documented. Also
  1309. welcome are any typo fixes, corrections or additions to this manual.
  1310.  
  1311.    Here is a list of known bugs:
  1312.  
  1313.    If you hit a bug in this list, please report it anyway. Most of the
  1314. bugs here remain unfixed because they are considered too esoteric to be
  1315. a high priority. If one of them gets reported enough, we will likely
  1316. change our view on that.
  1317.  
  1318.   1. EFS does not check to make sure that when creating a new file, you
  1319.      provide a valid filename for the remote operating system.  If you
  1320.      do not, then the remote FTP server will most likely translate your
  1321.      filename in some way. This may cause EFS to get confused about
  1322.      what exactly is the name of the file.
  1323.  
  1324.   2. For CMS support, we send too many `cd''s. Since `cd''s are cheap,
  1325.      I haven't worried about this too much. Eventually, we should have
  1326.      some caching of the current minidisk. This is complicated by the
  1327.      fact that some CMS servers lie about the current minidisk, so
  1328.      sending redundant cd's helps us recover in this case.
  1329.  
  1330.   3. The code to do compression of files over ftp is not as careful as
  1331.      it should be. It deletes the old remote version of the file, before
  1332.      actually checking if the local to remote transfer of the
  1333.      compressed file succeeds. Of course to delete the original version
  1334.      of the file after transferring the compressed version back is also
  1335.      dangerous, because some OS's have severe restrictions on the
  1336.      length of filenames, and when the compressed version is copied
  1337.      back the `"-Z"' or `".Z"' may be truncated. Then, EFS would delete
  1338.      the only remaining version of the file.  Maybe EFS should make
  1339.      backups when it compresses files (of course, the backup `"~"'
  1340.      could also be truncated off, sigh...).  Suggestions?
  1341.  
  1342.   4. If a dir listing is attempted for an empty directory on (at least
  1343.      some) VMS hosts, an ftp error is given. This is really an ftp bug,
  1344.      and I don't know how to get EFS work to around it.
  1345.  
  1346.   5. EFS gets confused by directories containing file names with
  1347.      embedded newlines. A temporary solution is to add `"q"' to your
  1348.      dired listing switches. As long as your dired listing switches
  1349.      also contain `"l"' and either `"a"' or `"A"', EFS will use these
  1350.      switches to get listings for its internal cache. The "q" switch
  1351.      should force listings to be exactly one file per line. You still
  1352.      will not be able to access a file with embedded newlines, but at
  1353.      least it won't mess up the parsing of the rest of the files.
  1354.  
  1355.   6. EFS cannot parse symlinks which have an embedded `" -> "' in their
  1356.      name. It's alright to have an embedded `" -> "' in the name of any
  1357.      other type of file. A fix is possible, but probably not worth the
  1358.      trouble. If you disagree, send us a bug report.
  1359.  
  1360.   7. EFS doesn't handle context-dep. files in H-switch listings on
  1361.      HP's. It wouldn't be such a big roaring deal to fix this. I'm
  1362.      waiting until I get an actual bug report though.
  1363.  
  1364.   8. If a hard link is added or deleted, EFS will not update its
  1365.      internal cache of the link count for other names of the file.
  1366.      This may cause file-nlinks to return incorrectly. Reverting any
  1367.      dired buffer containing other names for the file will cause the
  1368.      file data to be updated, including the link counts.  A fix for
  1369.      this problem is known and will be eventually implemented. How it
  1370.      is implemented will depend on how we decide to handle inodes. See
  1371.      below.
  1372.  
  1373.   9. EFS is unable to parse R-switch listings from remote Unix hosts.
  1374.      This is inefficient, because EFS will insist on doing individual
  1375.      listings of the subdirectories to get its file information.  This
  1376.      may be fixed if there is enough demand.
  1377.  
  1378.  10. In file-attributes, EFS returns a fake inode number. Of course
  1379.      this is necessary, but this inode number is not even necessarily
  1380.      unique.  It is simply the sum of the characters (treated as
  1381.      integers) in the host name, user name, and file name. Possible
  1382.      ways to get a unique inode number are:
  1383.  
  1384.        1. Simply keep a count of all remote file in the cache, and
  1385.           return the file's position in this count as a negative number.
  1386.  
  1387.        2. For unix systems, we could actually get at the real inode
  1388.           number on the remote host, by adding an `"i"' to the ls
  1389.           switches.  The inode numbers would then be removed from the
  1390.           listing returned by `efs-ls', if the caller hadn't requested
  1391.           the `"i"' switch. We could then make a unique number out of
  1392.           the host name and the real inode number.
  1393.  
  1394.  11. EFS tries to determine if a file is readable or writable by
  1395.      comparing the file modes, file owner, and user name under which it
  1396.      is logged into the remote host. This does not take into account
  1397.      groups.  We simply assume that the user belongs to all groups. As
  1398.      a result we may assume that a file is writable, when in fact it is
  1399.      not.  Groups are tough to handle correctly over FTP. Suggestions?
  1400.      (For new FTP servers, can do a `"QUOTE SITE EXEC groups"' to
  1401.      handle this.)
  1402.  
  1403. 
  1404. File: efs.info,  Node: Concept Index,  Next: Variable and function index,  Prev: Bugs,  Up: Top
  1405.  
  1406. Concept Index
  1407. *************
  1408.  
  1409. * Menu:
  1410.  
  1411. * anonymous FTP:                         Using a .netrc.
  1412. * archive sites:                         Using Dired.
  1413. * backup files:                          Other options.
  1414. * buffers:                               Accessing the FTP process.
  1415. * CMS filenames:                         CMS support.
  1416. * descriptive directory listings:        DL support.
  1417. * extended directory listings:           DL support.
  1418. * filename completion:                   Using Dired.
  1419. * FTP processes:                         Accessing the FTP process.
  1420. * hostname completion:                   Using a .netrc.
  1421. * listing unreadable error:              Other options.
  1422. * MTS filenames:                         MTS support.
  1423. * process buffers:                       Accessing the FTP process.
  1424. * processes:                             Accessing the FTP process.
  1425. * temporary files:                       Other options.
  1426. * virtual dired:                         Using Dired.
  1427. * VMS filenames:                         VMS support.
  1428.  
  1429. 
  1430. File: efs.info,  Node: Variable and function index,  Prev: Concept Index,  Up: Top
  1431.  
  1432. Variable and function index
  1433. ***************************
  1434.  
  1435. * Menu:
  1436.  
  1437. * dired-find-file:                       VMS support.
  1438. * dired-no-confirm:                      Tips.
  1439. * dired-view-file:                       VMS support.
  1440. * efs-add-cms-host:                      CMS support.
  1441. * efs-add-dl-dir:                        DL support.
  1442. * efs-add-host <1>:                      Tips.
  1443. * efs-add-host:                          Other options.
  1444. * efs-add-mts-host:                      MTS support.
  1445. * efs-add-vms-host:                      VMS support.
  1446. * efs-binary-file-name-regexp <1>:       FTP processes.
  1447. * efs-binary-file-name-regexp:           Other options.
  1448. * efs-cms-host-regexp:                   CMS support.
  1449. * efs-default-account:                   Other options.
  1450. * efs-default-password:                  Other options.
  1451. * efs-default-user <1>:                  Using a .netrc.
  1452. * efs-default-user <2>:                  Remote filenames.
  1453. * efs-default-user:                      Other options.
  1454. * efs-display-ftp-activity:              FTP processes.
  1455. * efs-dl-dir-regexp:                     DL support.
  1456. * efs-dumb-unix-host-regexp:             Other options.
  1457. * efs-fatal-msgs:                        Other options.
  1458. * efs-ftp-local-host-regexp:             Setting up a gateway.
  1459. * efs-ftp-program-args:                  Gateway types.
  1460. * efs-ftp-program-name:                  Other options.
  1461. * efs-ftp-startup-function-alist:        Tips.
  1462. * efs-gateway-fatal-msgs:                Other options.
  1463. * efs-gateway-host:                      Setting up a gateway.
  1464. * efs-gateway-mounted-dirs-alist:        Setting up a gateway.
  1465. * efs-gateway-tmp-name-template:         Setting up a gateway.
  1466. * efs-gateway-type:                      Gateway types.
  1467. * efs-generate-anonymous-password:       Tips.
  1468. * efs-gwp-prompt-pattern:                Gateway types.
  1469. * efs-gwp-setup-term-command:            Gateway types.
  1470. * efs-hash-mark-size <1>:                FTP processes.
  1471. * efs-hash-mark-size:                    Other options.
  1472. * efs-kill-ftp-process <1>:              Accessing the FTP process.
  1473. * efs-kill-ftp-process <2>:              Tips.
  1474. * efs-kill-ftp-process:                  EFS commands.
  1475. * efs-local-host-regexp:                 Setting up a gateway.
  1476. * efs-make-backup-files:                 Other options.
  1477. * efs-mode-line-format:                  FTP processes.
  1478. * efs-mts-host-regexp:                   MTS support.
  1479. * efs-netrc-filename <1>:                Using a .netrc.
  1480. * efs-netrc-filename:                    Other options.
  1481. * efs-process-verbose:                   Other options.
  1482. * efs-prompt-for-transfer-type:          FTP processes.
  1483. * efs-retry-time:                        Other options.
  1484. * efs-send-hash:                         FTP processes.
  1485. * efs-set-account <1>:                   CMS support.
  1486. * efs-set-account <2>:                   EFS commands.
  1487. * efs-set-account:                       Passwords.
  1488. * efs-set-passwd <1>:                    EFS commands.
  1489. * efs-set-passwd:                        Passwords.
  1490. * efs-set-user:                          EFS commands.
  1491. * efs-skip-msgs <1>:                     Other options.
  1492. * efs-skip-msgs:                         Gateway problems.
  1493. * efs-text-file-name-regexp:             FTP processes.
  1494. * efs-tmp-name-template:                 Other options.
  1495. * efs-treat-crlf-as-nl:                  FTP processes.
  1496. * efs-verbose:                           FTP processes.
  1497. * efs-vms-host-regexp:                   VMS support.
  1498. * revert-buffer:                         Using Dired.
  1499.  
  1500.  
  1501. 
  1502. Tag Table:
  1503. Node: Top191
  1504. Node: What is EFS?1285
  1505. Node: Installing EFS3873
  1506. Node: Obtaining source code5341
  1507. Node: Installing source6043
  1508. Node: Using a gateway7665
  1509. Node: Setting up a gateway8765
  1510. Node: Gateway types10684
  1511. Node: Gateway problems17913
  1512. Node: Other options20092
  1513. Node: Using EFS26085
  1514. Node: Ports28380
  1515. Node: Remote filenames28867
  1516. Node: Passwords29754
  1517. Node: Using Dired31735
  1518. Node: Using a .netrc33595
  1519. Node: EFS commands36048
  1520. Node: FTP processes37336
  1521. Node: Tips40700
  1522. Node: DL support43812
  1523. Node: Non-Unix Hosts44730
  1524. Node: VMS support46007
  1525. Node: CMS support49148
  1526. Node: MTS support50687
  1527. Node: Completion52079
  1528. Node: Accessing the FTP process53762
  1529. Node: Getting help55087
  1530. Node: Bugs56155
  1531. Node: Concept Index61564
  1532. Node: Variable and function index62686
  1533. 
  1534. End Tag Table
  1535.